package com.niit.dao

import java.sql.Connection

import com.niit.utils.JDBCUtil

class BlackListDao {

  //根据Id查询黑名单用户
  def selectBlackUserById(userId:String):Boolean={
    //1.获得MySQL连接
    val conn: Connection = JDBCUtil.getConnection
    //编写并执行MySQL语句，以及传递参数
    val bool: Boolean = JDBCUtil.isExist(conn,
      """
        |select * from black_list where userid = ?
        |
        |""".stripMargin, Array(userId))

    //3.关闭连接
    conn.close()
    //4.返回值
    bool
  }
  //向黑名单中添加数据，如果该用户已经存在黑名单表中，就更新id
  def insertBlackList(userid:String): Unit ={
    //1.获得MySQL连接
    val conn: Connection = JDBCUtil.getConnection
    //2.编写并执行SQL
    JDBCUtil.executeUpdate(conn,
      """
        | insert into black_list(userid) values (?)  on duplicate key update userid = ?
        |""".stripMargin,Array( userid,userid ))
    /*
    on duplicate key update 如果userid=6存在则更新userid
     */
    //3.关闭连接
    conn.close()
  }

  //向 某天某用户点击某个广告 。如果该数据存在则只是更新的次数  count是在service中计算好的当前点击的次数
  def insertUserAdCount(day:String,user:String,ad:String,count:Int): Unit ={

    //1.获得MySQL连接
    val conn: Connection = JDBCUtil.getConnection
    //2.编写并执行SQL
    JDBCUtil.executeUpdate(conn,
      """
        | insert into user_ad_count(dt,userid,adid,count)
        |   values (?,?,?,?)
        | on duplicate key update count = count + ?
        |""".stripMargin,Array(day,user,ad,count,count))    // 新的总次数 = 之前点击次数 10 + 当前点击次数 50   60


    //3.关闭连接
    conn.close()
  }

  //查看用户的点击广告次数 是否超过规则次数 查看 2024 5月1日  张三 点击 加多宝   是否  超过 100次
  def checkUserByCount(day:String,user:String,ad:String,count:Int): Boolean ={
    //1.获得MySQL连接
    val conn: Connection = JDBCUtil.getConnection
    //2.编写并执行MySQL
   val bool =  JDBCUtil.isExist(conn,
      """
        |select dt,userid,adid,count
        |  from user_ad_count
        |  where dt=?  and userid=? and adid=? and count>=?
        |""".stripMargin,Array(day,user,ad,count))

    //3.关闭连接
    conn.close()
    bool
  }

}
